//package club.controller;
//
//import club.pojo.Answer;
//import club.pojo.Comment;
//import club.service.CommentService;
//import club.util.Message;
//import com.github.pagehelper.PageInfo;
//import club.pojo.Pet;
//import club.pojo.User;
//import club.service.AnswerService;
//import club.service.UserService;
//import org.springframework.stereotype.Controller;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.ResponseBody;
//
//import javax.annotation.Resource;
//import javax.servlet.http.HttpSession;
//import java.util.List;
//import org.springframework.web.bind.annotation.RequestParam;
//
//
//@Controller
//@RequestMapping("/comment")
//public class CommentController {
//    @Resource
//    private CommentService commentService;
//    @Resource
//    private AnswerService answerService;
//    @Resource
//    private UserService userService;
//    // 依赖注入：评论服务、回复服务、用户服务
//
//    /**
//     * 分页查询评论列表（支持按用户名筛选）
//     * @param userName 用户名（可选，用于模糊查询评论作者）
//     * @param pn 页码（必填，默认值通过方法内逻辑处理）
//     * @return Message.success() 携带分页数据（键："pageInfo"，值：PageInfo<Comment>）
//     */
//    @RequestMapping("/comments")
//    @ResponseBody
//    public Message comments(@RequestParam(required = false) String userName, Integer pn) {
//        Integer pageSize = 5;
//        // 调用服务层进行分页查询，传入用户名、页码、页大小
//        PageInfo<Comment> pageInfo = commentService.allComment(userName, pn, pageSize);
//        return Message.success().add("pageInfo", pageInfo);
//    }
//
//    /**
//     * 查询某宠物的所有评论及其关联的回复和用户信息
//     * @param petId 宠物ID（必填，用于筛选属于该宠物的评论）
//     * @return Message.success() 携带封装后的评论列表（键："comment"，值：List<Comment>）
//     */
////    @RequestMapping("/petComments")
////    @ResponseBody
////    public Message petComments(Integer petId) {
////        // 1. 查询该宠物的所有评论
////        List<Comment> comments = commentService.petComments(petId);
////
////        // 2. 为每条评论补充关联数据：
////        for (Comment comment : comments) {
////            // 2.1 查询该评论的所有回复
////            List<Answer> answers = answerService.answersAboutOneComment(comment.getId());
////            comment.setAnswer(answers);
////            // 将回复列表存入评论对象
////
////            // 2.2 查询评论作者的用户信息
////            User user = userService.findById(comment.getUserId());
////            comment.setUser(user);
////            // 将用户信息存入评论对象
////        }
////
////        return Message.success().add("comment", comments);
////        // 返回包含完整关联数据的评论列表
////    }
//
//    /**
//     * 创建新评论（关联当前用户和宠物）
//     * @param session HTTP会话（用于获取当前登录用户和目标宠物）
//     * @param content 评论内容（必填）
//     * @return Message.success() 或 Message.fail() 根据创建结果返回
//     */
//    @RequestMapping("/create")
//    @ResponseBody
//    public Message create(HttpSession session, String content) {
//        // 从会话中获取当前用户和宠物（通常在前端请求前存入会话）
//        User user = (User) session.getAttribute("user");
//        Pet pet = (Pet) session.getAttribute("pet");
//
//        // 调用服务层创建评论，传入用户ID、宠物ID、评论内容
//        Integer integer = commentService.create(user.getId(), pet.getId(), content);
//        return integer > 0 ? Message.success() : Message.fail();
//        // 根据影响行数判断成功与否
//    }
//
//    /**
//     * 根据评论ID查询评论详情并存储到会话中
//     * @param session HTTP会话（用于存储查询到的评论对象，供后续操作使用）
//     * @param id 评论ID（必填）
//     * @return Message.success() 携带评论对象（键："comment"，值：Comment）
//     */
//    @RequestMapping("/findById")
//    @ResponseBody
//    public Message findById(HttpSession session, Integer id) {
//        Comment comment = commentService.findById(id);
//        // 查询评论详情
//        session.setAttribute("comment", comment);
//        // 将评论存入会话（例如供编辑页面回显）
//        return Message.success().add("comment", comment);
//        // 返回评论对象给前端
//    }
//
//    /**
//     * 更新评论内容
//     * @param comment 包含更新后信息的评论对象（必须包含ID）
//     * @return Message.success() 或 Message.fail() 根据更新结果返回
//     */
//    @RequestMapping("/update")
//    @ResponseBody
//    public Message update(Comment comment) {
//        int update = commentService.update(comment);
//        // 调用服务层执行更新
//        return update > 0 ? Message.success() : Message.fail();
//        // 根据影响行数判断成功与否
//    }
//
//    /**
//     * 删除评论（物理删除）
//     * @param id 评论ID（必填）
//     * @return Message.success() 或 Message.fail() 根据删除结果返回
//     */
//    @RequestMapping("/delete")
//    @ResponseBody
//    public Message delete(Integer id) {
//        int delete = commentService.delete(id);
//        // 调用服务层执行删除
//        return delete > 0 ? Message.success() : Message.fail();
//        // 根据影响行数判断成功与否
//    }
//}